package tutoria.lobao.poo.maquinarefrigerante;

public class MaquinaRefrigerante {

	private double caixa = 0;
	private double money = 0;
	private double[] coins = { 0.10, 0.25, 0.50, 1.00 };

	private int optionSoda = 0;
	private Estoque[] itens;
	private boolean podeProsseguir = false;
	private String error = "";

	public MaquinaRefrigerante() {
		itens = new Estoque[5];

		itens[0] = new Estoque(new Refrigerante("Coca-Cola", 3.5), 20);
		itens[1] = new Estoque(new Refrigerante("Guarana Antartica", 3.0), 20);
		itens[2] = new Estoque(new Refrigerante("Fanta Laranja", 2.8), 10);
		itens[3] = new Estoque(new Refrigerante("Fanta Uva", 1.5), 1);
		itens[4] = new Estoque(new Refrigerante("Sprite", 2.5), 25);

		caixa = 10;
	}

	public void setOptionSoda(int optionSoda) {
		this.optionSoda = optionSoda;
	}

	public String getOpcoesRefrigerantes() {
		String out = "";
		for (int i = 0; i < itens.length; i++) {
			out += i + ": " + itens[i].getRefrigerante().getNome() + "\n";
		}
		return out;
	}

	public int getQuantidadeDeOpcoes() {
		return itens.length;
	}

	public void setMoney(double money) {
		this.money = money;
	}

	public double[] getCoins() {
		return coins;
	}

	public double getMoney() {
		return money;
	}

	private boolean isValid() {
		return podeProsseguir;
	}

	public void processaDados() {
		if (money >= getValorRefrigerante()) {
			if (getQuantidadeEmEstoque() > 0) {
				System.out.println("\n DEBUG: " + getQuantidadeEmEstoque() + "\n");
				podeProsseguir = true;
			} else {
				error = "Refrigerante indisponivel no estoque.";
			}
		} else {
			error = "Dinheiro insuficiente!";
		}
	}

	public double getValorRefrigerante() {
		return itens[optionSoda].getRefrigerante().getPreco();
	}

	public int getQuantidadeEmEstoque() {
		return itens[optionSoda].getQuantidade();
	}

	public double getTroco() {
		if (isValid()) {
			return money - getValorRefrigerante();
		}

		return money;
	}

	public String entregarRefrigerante() {
		if (isValid()) {
			itens[optionSoda].darBaixa();
			return "Refrigerante escolhido: " + itens[optionSoda].getRefrigerante().getNome();
		}

		return error;
	}
}